const http = require('http');
const fs = require('fs');
const path = require('path');

// 1. 创建POST服务
const server = http.createServer((req, res) => {
  // 仅处理POST请求和8081端口
  if (req.method !== 'POST' || req.url !== '/login') {
    res.writeHead(404, {'Content-Type': 'text/plain; charset=utf-8'});
    return res.end('仅支持POST /login请求');
  }

  // 2. 解析POST请求体（接收客户端发送的数据）
  let requestBody = '';
  req.on('data', (chunk) => {
    requestBody += chunk; // 分段接收数据
  });

  // 3. 数据接收完成后，验证身份
  req.on('end', () => {
    try {
      // 解析请求体（格式：username=xxx&password=xxx）
      const params = new URLSearchParams(requestBody);
      const inputUser = {
        username: params.get('username'),
        password: params.get('password')
      };

      // 验证参数是否完整
      if (!inputUser.username || !inputUser.password) {
        res.writeHead(400, {'Content-Type': 'text/plain; charset=utf-8'});
        return res.end('错误：用户名或密码不能为空');
      }

      // 4. 读取data.json中的用户数据
      const userPath = path.join(__dirname, 'data.json');
      fs.readFile(userPath, 'utf8', (err, data) => {
        if (err) {
          res.writeHead(500, {'Content-Type': 'text/plain; charset=utf-8'});
          return res.end(`服务器错误：${err.message}`);
        }

        // 解析JSON数据
        const userList = JSON.parse(data);

        // 5. 验证用户名和密码
        const isMatch = userList.some(user => 
          user.username === inputUser.username && 
          user.password === inputUser.password
        );

        // 6. 返回验证结果
        res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
        res.end(isMatch ? '登录成功' : '用户名、密码不正确');
      });
    } catch (err) {
      // 捕获解析错误
      res.writeHead(400, {'Content-Type': 'text/plain; charset=utf-8'});
      res.end(`请求格式错误：${err.message}`);
    }
  });
});

// 启动服务
server.listen(8081, () => {
  console.log('登录验证服务已启动：POST http://localhost:8081/login');
});